﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Fuyao.Business.Entities.Models;
using Fuyao.Business.Logic.BC;
using Fuyao.Win.UI.Util;
using Fuyao.Win.UI.Common;

namespace Fuyao.Win.UI.Mantenimientos
{
    public partial class frmListConductores : Form
    {
        BusinessLogic bc = new BusinessLogic();
        List<Conductor> listConductor = new List<Conductor>();

        public frmListConductores()
        {
            InitializeComponent();
        }

        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            this.ControlBox = false;
            this.WindowState = FormWindowState.Maximized;
            this.BringToFront();
        }

        private void btnNuevo_Click(object sender, EventArgs e)
        {
            Mantenimientos.frmConductor frm = new Mantenimientos.frmConductor();
            frm.ShowDialog();
            if (frm.action) cargarGrillaConductores(false);
        }

        private void cargarGrillaConductores(bool _flag)
        {
            Conductor beConductor = new Conductor();
            beConductor.NombreConductor = this.txtNombreConductor.Text.Trim() == string.Empty ? "0" : this.txtNombreConductor.Text.Trim();
            beConductor.ApellidoConductor = this.txtApellidosConductor.Text.Trim() == string.Empty ? "0" : this.txtApellidosConductor.Text.Trim();
            beConductor.LicenciaConducir = this.txtLicenciaConducir.Text.Trim() == string.Empty ? "0" : this.txtLicenciaConducir.Text.Trim();
            beConductor.Estado = this.cboEstado.SelectedIndex == 0 ? true : false;
            listConductor = bc.getConductorByFilter(beConductor);
            if (listConductor.Count > 0) dgvConductores.DataSource = listConductor;
            else
            {
                if (!_flag)
                {
                    MessageBox.Show("No se encontraron registros, verifique los filtros de búsqueda", "Sistema FUYAO - Mensaje de Confirmación", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    dgvConductores.DataSource = null;
                }
            }
        }

        private void setColumnasGrilla()
        {
            ColConductorID.DataPropertyName = "ConductorID";
            colNombreConductor.DataPropertyName = "NombreConductor";
            colApellidoConductor.DataPropertyName = "ApellidoConductor";
            colLicenciaConducir.DataPropertyName = "LicenciaConducir";
            ColEstadoConductor.DataPropertyName = "Estado";
        }

        private void limpiarControles()
        {
            Utilitarios.limpiarControles(this);
        }

        private void btnEditar_Click(object sender, EventArgs e)
        {
            if (dgvConductores.RowCount == 0)
            {
                MessageBox.Show("No existen registros para Editar", "Sistema FUYAO - Validando Opción", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            if (dgvConductores.CurrentRow != null && dgvConductores.CurrentRow.DataBoundItem != null) 
            {
                Conductor oConductor = (Conductor)dgvConductores.CurrentRow.DataBoundItem;
                Mantenimientos.frmConductor frm = new Mantenimientos.frmConductor();
                frm.ConductorID = oConductor.ConductorID;
                frm.ShowDialog();
                if (frm.action) cargarGrillaConductores(false);
            }
            else
            {
                MessageBox.Show("Seleccione un registro para Editar", "Sistema FUYAO - Validando Opción", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            } 
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            if (dgvConductores.RowCount == 0)
            {
                MessageBox.Show("No existen registros para Eliminar", "Sistema FUYAO - Validando Opción", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            if (dgvConductores.CurrentRow != null) eliminarConductor();
            else
            {
                MessageBox.Show("Seleccione un registro para Eliminar", "Sistema FUYAO - Validando Opción", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }     
        }

        private void eliminarConductor()
        {
            if (!(bool)((Conductor)dgvConductores.CurrentRow.DataBoundItem).Estado)
            {
                MessageBox.Show("El registro seleccionado ya se encuentra eliminado", "Sistema FUYAO - Validando opción", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            if (MessageBox.Show("Esta seguro que desea eliminar el registro seleccionado", "Sistema FUYAO - Mensaje de Confirmación", MessageBoxButtons.YesNo,
                    MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
            {
                if (bc.DeleteConductor(((Conductor)dgvConductores.CurrentRow.DataBoundItem).ConductorID, VariablesGlobales.GlobalEnUsuario.UsuarioID))
                {
                    MessageBox.Show("Se eliminó el registro correctamente", "Sistema FUYAO - Mensaje de Confirmación", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    cargarGrillaConductores(false);
                }
                else
                    MessageBox.Show("Error al eliminar el registro seleccionado, contacte con Sistemas", "Sistema FUYAO - Mensaje de Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }

        private void btnCerrar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnMaximizar_Click(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Maximized;
        }

        private void btnRestaurar_Click(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Normal;
        }

        private void frmListConductores_Load(object sender, EventArgs e)
        {
            this.txtNombreConductor.Focus();
            this.cboEstado.SelectedIndex = 0;
            Utilitarios.configurarGrilla(ref dgvConductores);
            setColumnasGrilla();
            cargarGrillaConductores(true);
        }

        private void btnBuscarConductor_Click(object sender, EventArgs e)
        {
            cargarGrillaConductores(false);  
        }

        private void txtNombreConductor_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(Keys.Enter)) this.txtApellidosConductor.Focus();
        }

        private void txtApellidosConductor_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(Keys.Enter)) this.txtLicenciaConducir.Focus();
        }

        private void txtLicenciaConducir_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(Keys.Enter)) this.btnBuscarConductor.Focus();
        }

    }
}
